package org.example.java_gobang.game;

import org.springframework.stereotype.Component;

import java.util.concurrent.ConcurrentHashMap;

//房间管理器
// 这个类希望有唯一实例
@Component
public class RoomManager {
    //创建一个哈希表  要考虑线程安全问题
    private ConcurrentHashMap<String,Room> rooms = new ConcurrentHashMap<>();
    //通过用户i找到房间id   映射关系
    private ConcurrentHashMap<Integer,String> userIdToRoomId = new ConcurrentHashMap<>();

    public void add(Room room, int userId1, int userId2) {
        rooms.put(room.getRoomId(),room);  //键值对
        userIdToRoomId.put(userId1,room.getRoomId());
        userIdToRoomId.put(userId2,room.getRoomId());
    }


    public void remove (String roomId,int userId1, int userId2) {
        rooms.remove(roomId);
        userIdToRoomId.remove(userId1);
        userIdToRoomId.remove(userId2);
    }

    public Room getRoomByRoomId (String roomId) {

      return rooms.get(roomId);
    }


    public Room getRoomByUserId(int userId) {
        String roomId = userIdToRoomId.get(userId);
        if (roomId == null) {
            return null;
        }
        return rooms.get(roomId);
    }
}
